Volume rendering is an important area of computer graphics. It is employed in a wide variety of disciplines, including medicine, geology, biology and meteorology. Volume rendering allows a user to look inside an object and see features that were otherwise shielded by the rendering of the surface features.
Volumetric data consists of a 3D dataset of elements called "voxels" 102, as shown in FIG. 1. Typically, the voxels 102 are uniformly distributed throughout a volume 104. Each voxel 102 has a position in the volume, as shown in FIG. 1, and has associated with it information such as color, illumination, opacity, velocity, amplitude, etc. The information associated with each voxel 102 is produced by such disciplines as medicine (e.g., CAT scans), biology (confocal microscopy), and geoscience (seismic data).
Typically, the values of the voxels 102 are stored in an array 202, as shown in FIG. 2. The position of a particular voxel in the volume is inherent in its location in the array. For example, array position 204 might be associated with a point 106 in the volume that is a specified distance from a specified comer of the volume. Typically, a single value is stored in the array 202 for each voxel 102, although it is also possible to store more than one value for each voxel 102.
For rendering, the volume 104 is sliced into three sets of slices 302, 402 and 502, as shown in FIGS. 3, 4 and 5, along three different axes perpendicular to the respective set of slices. The voxels are partitioned among slices 302, 402 and 502. The partitioning is done based on the position of the voxels in array 202.
The rendering is then accomplished on a slice-by-slice basis, moving from the rear-most slice 304, 404 and 504, respectively, to the front-most slice 306, 406 and 506, respectively. The set of slices that is chosen to be processed is the set whose axis makes the smallest angle to the viewing direction.
A texture value, or "texel," is determined for each voxel in each slice (blocks 702 and 704) as shown in FIGS. 6 and 7. The texels are stored in a data buffer 602 (block 706). Typically, the texel value is an indication of the color to be displayed for that voxel and is found in a look-up table. For example, the texel data may include a value for each of the red, green, and blue (RGB) components associated with the voxel.
When all of the voxels in the slice have been processed (block 704), the contents of the data buffer are downloaded into a textual memory 604 (block 708). A display device 802, shown in FIG. 8, determines from information downloaded with the texel data which slice is to be displayed. Based on that information and the perspective requested by the user, the display device maps the texels onto pixels on a display screen 804 (block 710). As each slice is downloaded and rendered, the user sees the volume in the requested perspective. Each time the user changes the view, for example by using a tool to rotate, translate or magnify the volume, the process of downloading and rendering slices is repeated. The resulting display, illustrated in FIG. 9, shows the outside surfaces of the volume.
In some applications, greater flexibility is achieved by using semi-transparent data. Semi-transparent data includes an additional factor, alpha, along with the RGB components discussed above. The alpha value of a voxel determines the opacity of that voxel. Opacity is a measure of the amount a particular texel on a slice will allow a texel on a background slice that maps to the same pixel to show through. This is achieved by mixing the colors of the overlapping texels depending on their opacity. If the opacity of a texel is 0, it is transparent and it has no effect on the color of the displayed pixel. If its opacity is 1, it is opaque and, if it has no other texels mapped in front of it, it determines the color of the displayed pixel. If its opacity is between 0 and 1, the colors of two texels mapped to the same pixel are mixed in conventional ways to determine the color of the pixel that will be displayed.
Semi-transparent volumetric data is present in many applications such as geophysical seismic interpretation, magnetic imaging, and ultrasonography. In those cases, the value of the voxel is not only mapped to a color but also an alpha. The user can effect the mapping with an opacity tool, such as the one illustrated in FIG. 10. In FIG. 10, the user has adjusted the opacity mapping, shown graphically by curve 1002, to make transparent (alpha=0) all voxels except those having large positive or negative values. This has the effect of making most of the data transparent, as can be seen from the histogram 1004 which reflects the distribution of the values of the voxels in the data illustrated in FIG. 9.
When the data displayed in FIG. 9 is processed using the opacity tool shown in FIG. 10, the result is the display shown in FIG. 11. The surface of the volume no longer obscures structures inside the volume.
It is also apparent from the histogram 1004 and FIG. 11 that most of the opacity-adjusted voxels are transparent and have no effect on the display.